package ru.chaykin.quadtree;

import java.util.ArrayList;
import java.util.List;

import ru.chaykin.viewobject.ViewObject;

/**
 * Элемент квадротомического дерева
 * @author k.chaykin
 */
public class QuadElement {
	
	public static final byte CHILDREN_NUM = 4;
	
	private QuadElement[] children;
	
	private List<ViewObject> objs;
	private int count = 0;
	
	private Quad bbox;
	
	QuadElement(Quad bbox) {
		this.bbox = bbox;
	}

	int getCount() {
		return count;
	}
	
	void addObj(ViewObject vObj) {
		if (objs == null)  //Экономим память, инициализируем только если надо
			objs = new ArrayList<ViewObject>(100);
		count++;
		objs.add(vObj);
	}
	
	/**
	 * Вызывается после переноса объектов в нижележащие подпространства
	 */
	void clearObjs() {
		objs = null;
	}
	
	List<ViewObject> getObjs() {
		return objs;
	}
	
	boolean hasChildren() {
		return children != null;
	}
	void setChildren(QuadElement[] children) {
		this.children = children;
	}
	
	QuadElement[] getChildren() {
		return children;
	}
	
	Quad getBoundingBox() {
		return bbox;
	}
}
